package ${package}.${moduleName}.service;

import ${package}.framework.common.utils.PageResult;
import ${package}.framework.mybatis.service.BaseService;
import ${package}.${moduleName}.vo.${ClassName}VO;
import ${package}.${moduleName}.query.${ClassName}Query;
import ${package}.${moduleName}.entity.${ClassName}Entity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * ${tableComment}
 *
 * @author ${author} ${email}
 * @since ${version} ${date}
 */
public interface ${ClassName}Service extends BaseService<${ClassName}Entity> {

    PageResult<${ClassName}VO> page(${ClassName}Query query);

    /**
    * 保存表单
    * @param vo 表单数据
    */
    void save(${ClassName}VO vo);

    /**
    * 更新表单
    * @param vo 表单数据
    */
    void update(${ClassName}VO vo);

    /**
    * 根据ID删除表单
    * @param idList ID列表
    */
    void delete(List<String> idList);

    /**
    * @param id 表单ID
    * @return 表单数据详情
    */
    ${ClassName}VO get${ClassName}VO(String id);

    /**
    * @param businessKey 表单ID
    * @return 表单数据详情
    */
    ${ClassName}VO get${ClassName}ByBusinessKey(String businessKey);

    /**
    * 表单动态参数导出
    * @param query 动态导出参数
    */
    void dynamicExportExcel(${ClassName}Query query);

    /**
    * 动态导入
    * @param file 上传文件
    */
    void dynamicImportExcel(MultipartFile file);

    /**
    *  批量保存
    * @param list 需要保存的列表
    */
    void batchSave(List<${ClassName}VO> list);

    /**
    * 批量更新
    * @param list 批量更新VO
    */
    void batchUpdateById(List<${ClassName}VO> list);

    /**
    *
    * @param query 查询
    * @return 返回列表
    */
    List<${ClassName}VO> getListByKeys(${ClassName}Query query);
}